1. Field
The present invention relates to electronic circuits and, more particularly, to a circuit for decoding pulse-width modulated data.
2. Background
The Mobile Industry Processor Interface (MIPI) Alliance has established a standard for a serial interface physical layer (PHY) named M-PHY. M-PHY may be used, for example, for communications between circuits in a mobile phone. An example use of M-PHY is for a Universal Flash Storage (UFS) link between a processor and a memory.
M-PHY communicates using pulse-width modulation (PWM) where the clock is embedded in a data signal. The data signal contains a serial stream of bits. Each bit of the serial stream spans a time interval that may be referred to as a bit time.
FIG. 1 is a waveform diagram of pulse-width modulated data. FIG. 1 illustrates the waveforms used with M-PHY, but other waveforms may be used with different polarities and different bit definitions. At the beginning and end of each bit time, the data signal transitions from high to low. A ZERO data value is represented by a pulse with a low time that is wider than the high time. A ONE data value is represented by a pulse with a high time that is wider than the low time. The width of the wide pulses may be, for example, two-thirds of the bit time.
Data rates in M-PHY are expressed as “gears.” Each gear has a three-to-one range of supported data rates as shown in Table 1.
TABLE 1MinimumMaximumGearData RateData Rate1  3 Mbps  9 Mbps2  6 Mbps 18 Mbps3 12 Mbps 36 Mbps4 24 Mbps 72 Mbps5 48 Mbps144 Mbps6 96 Mbps288 Mbps7192 Mbps576 Mbps
Communication on an M-PHY link can occur in bursts. The bursts include various states including a synchronization (SYNC) state that has a data sequence useful for synchronizing a receiver to a transmitter. The SYNC state may, for example, have a high density of transitions between data values. User data is communicated in a PAYLOAD state made up of 8B 10B (8 data bits coded as 10 pulse-width modulated bits) coded symbols.
Prior PWM decoders have used oversampling to recover the data. For example, a decoder may sample the data input 12 times per bit time and analyze the samples to determine the received data values. This type of decoder may not be suitable to use at the higher gears.